<?php
namespace Kuoqi\DbDriver\Sql;
class Field{
	
	public $params = array();

    /**
     * 简单的输入对象
     * vbase
     * Field constructor.
     * @param $fields
     */
	public function __construct($fields){
		//判定输入类型
		if(is_array($fields)){
			//判定输入类型为数组
			$fields = $fields;	
		}else if(is_string($fields)){
			//判定输入类型为字符串
			//进行字符串的基本切割
			$fields = explode(',',$fields);
		}
		
		//查看是否有[.]的符号在里面，如果有则自动切割
		foreach($fields as $v){
		    //判断是否为子语句，如果为子语句直接返回
            if(preg_match('/^\([\s\S]+/',$v)){
                $this->params[] = $v;
                continue;
            }
			$tmp = explode('.',$v);
			$tmp1 = '';
			foreach($tmp as $kk=>$vv){
				if($tmp1){
					$tmp1 .= '.'.$this->valiValue($vv);
				}else{
					$tmp1 = $this->valiValue($vv);	
				}
			}
			$this->params[] = $tmp1;
		}
	}

    /**
     * 对字段进行封装
     * vbase
     * @param $value
     * @return string
     */
	public function valiValue($value){
		//判断是否函数语句
		if(preg_match('/\(/',$value)){
			//里面宇哥括号，则直接返回
			return $value;	
		}
		//判定是否复杂的语句
		$code = explode(' ',$value);
		if(count($code)==1){
			$value = '`'.$value.'`';
		}
		return $value;
		
	}

    /**
     * 单纯的输出，格式化
     * vbase
     * @return string
     */
	public function output(){
		return implode(',',$this->params);
	}
	
}